home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / posix / glob.h < prev    next >
C/C++ Source or Header  |  1992-10-11  |  4KB  |  98 lines

  1. /* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
  2.  
  3. This library is free software; you can redistribute it and/or
  4. modify it under the terms of the GNU Library General Public License as
  5. published by the Free Software Foundation; either version 2 of the
  6. License, or (at your option) any later version.
  7.  
  8. This library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11. Library General Public License for more details.
  12.  
  13. You should have received a copy of the GNU Library General Public
  14. License along with this library; see the file COPYING.LIB.  If
  15. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  16. Cambridge, MA 02139, USA.  */
  17.  
  18. #ifndef    _GLOB_H
  19.  
  20. #define    _GLOB_H    1
  21.  
  22. #ifdef    __cplusplus
  23. extern "C"
  24. {
  25. #endif
  26.  
  27. #undef    __ptr_t
  28. #if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
  29. #undef    __P
  30. #define    __P(args)    args
  31. #define    __ptr_t    void *
  32. #else /* Not C++ or ANSI C.  */
  33. #undef    __P
  34. #define    __P(args)    ()
  35. #undef    const
  36. #define    const
  37. #define    __ptr_t    char *
  38. #endif /* C++ or ANSI C.  */
  39.  
  40. /* Bits set in the FLAGS argument to `glob'.  */
  41. #define    GLOB_ERR    (1 << 0)/* Return on read errors.  */
  42. #define    GLOB_MARK    (1 << 1)/* Append a slash to each name.  */
  43. #define    GLOB_NOSORT    (1 << 2)/* Don't sort the names.  */
  44. #define    GLOB_DOOFFS    (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
  45. #define    GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */
  46. #define    GLOB_APPEND    (1 << 5)/* Append to results of a previous call.  */
  47. #define    GLOB_NOESCAPE    (1 << 6)/* Backslashes don't quote metacharacters.  */
  48. #define    GLOB_PERIOD    (1 << 7)/* Leading `.' can be matched by metachars.  */
  49. #define    __GLOB_FLAGS    (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
  50.              GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|GLOB_PERIOD)
  51.  
  52. #if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_BSD_SOURCE)
  53. #define    GLOB_MAGCHAR    (1 << 8)/* Set in gl_flags if any metachars seen.  */
  54. #endif
  55.  
  56. /* Error returns from `glob'.  */
  57. #define    GLOB_NOSPACE    1    /* Ran out of memory.  */
  58. #define    GLOB_ABEND    2    /* Read error.  */
  59. #define    GLOB_NOMATCH    3    /* No matches found.  */
  60.  
  61. /* Structure describing a globbing run.  */
  62. typedef struct
  63.   {
  64.     int gl_pathc;        /* Count of paths matched by the pattern.  */
  65.     char **gl_pathv;        /* List of matched pathnames.  */
  66.     int gl_offs;        /* Slots to reserve in `gl_pathv'.  */
  67.     int gl_flags;        /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
  68.   } glob_t;
  69.  
  70. /* Do glob searching for PATTERN, placing results in PGLOB.
  71.    The bits defined above may be set in FLAGS.
  72.    If a directory cannot be opened or read and ERRFUNC is not nil,
  73.    it is called with the pathname that caused the error, and the
  74.    `errno' value from the failing call; if it returns non-zero
  75.    `glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
  76.    If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
  77.    Otherwise, `glob' returns zero.  */
  78. extern int glob __P ((const char *__pattern, int __flags,
  79.               int (*__errfunc) __P ((const char *, int)),
  80.               glob_t *__pglob));
  81.  
  82. /* Free storage allocated in PGLOB by a previous `glob' call.  */
  83. extern void globfree __P ((glob_t *__pglob));
  84.  
  85.  
  86. #if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE)
  87. /* If they are not NULL, `glob' uses these functions to read directories.  */
  88. extern __ptr_t (*__glob_opendir_hook) __P ((const char *__directory));
  89. extern const char *(*__glob_readdir_hook) __P ((__ptr_t __stream));
  90. extern void (*__glob_closedir_hook) __P ((__ptr_t __stream));
  91. #endif
  92.  
  93. #ifdef    __cplusplus
  94. }
  95. #endif
  96.  
  97. #endif /* glob.h  */
  98.